﻿
using System.Reflection;
using ClickLand.CorporacionPlaza.AccesoDato.Fabricas;
using ClickLand.CorporacionPlaza.Comunes.Entidades;
using ClickLand.CorporacionPlaza.Comunes.Recursos;
using ClickLand.CorporacionPlaza.LogicaNegocio.Contratos;
using Logger;


namespace ClickLand.CorporacionPlaza.LogicaNegocio.Implementacion.ComandosContrato
{
    /// <summary> Comando que agrega o edita los datos de un contrato </summary>
    public class AgregarEditar:IComando<bool>
    {

        #region Atributos

        /// <summary> datos del contrato a insertar </summary>
        private readonly Contrato _contrato;

        #endregion

        #region Constructor

        /// <summary> Constructor de la clase </summary>
        /// <param name="contrato">datos para la insercion</param>
        public AgregarEditar(Contrato contrato)
        {
            _contrato = contrato;
        }

        #endregion

        #region Implementacion

        /// <summary> Metodo que ejecuta la accion del comando </summary>
        /// <returns></returns>
        public bool Ejecutar()
        {
            #region Instrumentacion Entrada
            if (Log.InfoHabilitado)
                Log.Info(string.Format(Recurso.EntrandoMetodo,MethodBase.GetCurrentMethod().Name));
            #endregion
            var retorno =  FabricaDao.ObtenerFabrica().ObtenerDaoContrato().InsertarOModificar(_contrato);
            #region Instrumentacion Salida
            if (Log.InfoHabilitado)
                Log.Info(string.Format(Recurso.SaliendoMetodo,MethodBase.GetCurrentMethod().Name));
            #endregion
            return retorno;
        }

        #endregion
    }
}
